17|里式替换原则

里式替换原则(LSP)

子类对象能够替换父类对象出现的任何地方,并且程序的逻辑性不变以及正确性不被破坏。

里式替换原则与多态之间的关系

晃眼一看,里式替换原则似乎说的就是多态这么一回事,多态可以替换父类出现的任何地方。但是多态和里式替换原则完全是两个事情,他们的区别与联系如下:

相同点

  1. 子类能够替换父类出现的任何地方(里式替换原则与多态)

    不同点

  2. 子类替换父类对象出现的地方之后,里式替换原则需要保证程序的逻辑不变以及正确性不被破坏。多态则有可能出现正确性被破坏的情况。
  3. 多态是一种代码实现思路,而里氏替换原则是一种设计原则,用于指导继承关系中子类如何去设计来保证逻辑性不变以及正确性。

哪些设计不满足里式替换原则

  1. 子类违背父类要实现的功能

子类去覆盖重写父类原有的功能方法。

  1. 子类违背了父类关于输入、输出、异常的约定。

子类违背了父类的一些约定,导致子类替换的时候修改了以前的功能代码。

  1. 如何父类的单元测试没法通过子类的单元测试,则说明子类的设计没有符合里式替换原则。